﻿// JScript File - Created by hungnq on Apr.16.2009
//=====================================================//
/// Hàm xử lý mở popup
// url:     tham số bắt buộc, là đường dẫn tới trang popup
// Các tham số dưới đây không bắt buộc, nếu không truyền sẽ nhận giá trị mặc định
// name:    tên popup
// pxWith:  độ rộng của popup tính bằng px
// pxHeight: độ cao của popup tính bằng px
// pxTop:   khoảng cách từ cạnh trên popup đến cạnh trên của màn hình tính bằng px
// pxLeft:  khoảng cách từ cạnh trái của popup đến cạnh trái của màn hình tính bằng px
function CloseRadWindowAndRefreshParent()
{
    var oWindow = null;
    if (window.radWindow) 
        oWindow = window.radWindow;
    else if (window.frameElement.radWindow)  
        oWindow = window.frameElement.radWindow; 
        
    oWindow.close();
    oWindow.BrowserWindow.refreshContent();
}

function OpenPopupRadWindow(url, radWindowID, width, height)
{
    var radwindow = $find(radWindowID);
    radwindow.setSize(width,height);
    radwindow.setUrl(url);
    radwindow.show();
    return false;
}

function openPopup(url, name, pxWith, pxHeight, pxTop, pxLeft)
{
    if (typeof name == "undefined"){
        name = "Popup";
    }
    if (typeof pxWith == "undefined"){
        pxWith = 800;
    }
    if (typeof pxHeight == "undefined"){
        pxHeight = 600;
    }
    if (typeof pxTop == "undefined"){
        pxTop = 100;
    }
    if (typeof pxLeft == "undefined"){
        pxLeft = 100;
    }
    var popup = window.open(url, name, "resizable=yes,scrollbars=yes,toolbar=no,status=no, width=" + pxWith + ", height=" + pxHeight + ", top=" + pxTop + ", left=" + pxLeft);
    popup.focus();
    return false;
}

function ClosePopup_()
{    
    self.close();
    return false;
}

function ClosePopup_RefreshParent()
{
    if (window.opener != null && !window.opener.closed && window.opener.refreshContent)
        window.opener.refreshContent();
    self.close();
    return false;
}

/// Hàm xử lý chỉ cho check 1 node trên cây, sau khi check 1 node, thì uncheck tất cả các node còn lại
//  hungnq - May.04.2009
function UncheckOtherNodes(node)
{
    if (!node.Checked) return;
    for(var i=0; i<node.TreeView.AllNodes.length; i++)
    {
        if (node.TreeView.AllNodes[i] != node) node.TreeView.AllNodes[i].UnCheck();
    }
}

/// Khai báo biến toàn cục để chứa các tag cần ẩn khi hiện một tag
if (typeof arrTag == "undefined") arrTag = new Array();

function AddTagVisibility(tagName)
{
    if (arrTag == null) arrTag = new Array();
    for (var i = 0; i < arrTag.length; i++)
    {
        if (arrTag[i] == tagName) return;
    }    
    arrTag.push(tagName);    
}

/// Đổi trạng thái ẩn / hiện của tag
/// Nếu hiện tag lên thì ẩn các tag còn lại
/// Các tag cần ẩn chứa trong mảng arrTag, gọi hàm AddTagVisibility để thêm các tag này vào mảng
function ToggleVisibility(tagName)
{
    var tagElement = document.getElementById(tagName);    
    
    if (tagElement != null)
    {
    
        if (tagElement.style.visibility == "visible")
        {
            tagElement.style.visibility = "hidden";
        }
        else
        {
            // hidden all tag        
            var tagHidden;
            for (var i = 0; i < arrTag.length; i++)
            {
                tagHidden = document.getElementById(arrTag[i]);
                if (tagHidden != null) tagHidden.style.visibility = "hidden";
            }        
            tagElement.style.visibility = "visible";
        }
    }     
}

/// Hàm checkall các checkbox trong container đầu vào
//xu ly tren trang ProjectInfo/pgUpdateOwnerActionDIERequest.aspx
function checkAll(container)
{
    if(container) {
        var items = container.getElementsByTagName('input');
        for (var i = 0; i < items.length; i++) {
            if(items[i].type == 'checkbox' &&
                items[i].disabled == false) 
             {
                   items[i].click();
                   items[i].checked = 'checked';
             }
        }
    }
}

/// Hàm uncheckall các checkbox trong container đầu vào
function uncheckAll(container)
{
    if(container) {
        var items = container.getElementsByTagName('input');
        for (var i = 0; i < items.length; i++) {
            if(items[i].type == 'checkbox' &&
                items[i].disabled == false)
             {
                items[i].click();
                items[i].checked = '';
             }
        }
    }
}


// Get element by Class and Tag Name.
function getElementsByClass(searchClass, domNode, tagName) 
{
    if (domNode == null) domNode = document;
    if (tagName == null) tagName = '*';
    var el = new Array();
    var tags = domNode.getElementsByTagName(tagName);
    var tcl = " "+searchClass+" ";
    for(i=0,j=0; i<tags.length; i++) {
	    var test = " " + tags[i].className + " ";
	    if (test.indexOf(tcl) != -1)
	    el[j++] = tags[i];
    }
    return el;
}

// set visibility to visible.
function ShowDivTagByDivID(treeDiv)
{
    // search all div with same class.
    // 
    var allDivTags = getElementsByClass("div_show_hide", null, "div");
    
    for(var i = 0; i < allDivTags.length; i++)
    {
	    allDivTags[i].style.visibility = 'hidden';
    }

    document.getElementById(treeDiv).style.visibility = 'visible';
}

//Đặt ẩn TreeView
function HiddenAllTreeView()
{
    // search all div with same class.
    // 
    var allDivTags = getElementsByClass("div_show_hide", null, "div");
    
    for(var i = 0; i < allDivTags.length; i++)
    {
	    allDivTags[i].style.visibility = 'hidden';
    }
    
}

// Hàm đổi trạng thái ẩn/hiện của một div chứa các tree option
// thientd
function ToggleTreeViewDivVisibility(treeDivID)
{    
    var divGet = document.getElementById(treeDivID);
    if (divGet)
    {        
        if (divGet.style.visibility == "visible")
        {
            divGet.style.visibility = "hidden";
        }
        else
        {
            ShowDivTagByDivID(treeDivID);
        }
    }
}

/// Hàm xử lý hiển thị thông báo
//  hungnq; Oct.27.2009
function showMessage(message, cssClass, divElementId)
{   
    var divMessage = document.getElementById(divElementId);
    if (divMessage)
    {
        divMessage.className = cssClass;
        divMessage.innerHTML = message;
        setTimeout("hiddenMessageShow(" + divElementId + ")", 3000);
    }
    return false;
}



//Thangnv - ham an message 
function hiddenMessageShow(divElementId) {
    var divMessage = document.getElementById('message');
    divMessage.className = "";
    divMessage.innerHTML = "";
}



/// Hàm xử lý hiển thị thông báo
//  hungnq; Oct.27.2009
function HiddenMessage(divElementId)
{
    var divMessage = document.getElementById(divElementId);
    if (divMessage)
    {
        divMessage.className = "";
        divMessage.innerHTML = "";
    }
    return false;
}

/// Hàm xử lý checkChanged cho trường hợp cây tổng quát (4 hàm)
// fS
function AfterChecked_RadTreeViewNode(clickedNode) {
    var checked = clickedNode.Checked;    
    CheckUpdateAllParentNode(clickedNode, checked);
    UpdateAllChildrenNode(clickedNode, checked);
}

//fS1
function CheckUpdateAllParentNode(node, checked) {
    
    var parent = node.Parent;
    if(parent != null)
    {
        var parent_check = false;
        var siblingCollection = parent.Nodes;
        if(checked)
        {
            for (var i = 0; i < siblingCollection.length; i++) {
                if (siblingCollection[i].Checked) {
                    parent_check = true;
                }
                else
                {
                    parent.UnCheck();
                    break;
                }
                
                parent.Check();
                
            }
         }
         else
         {
            parent.UnCheck();
         }  
    }
      
}


/// Hàm xử lý checkChanged cho trường hợp cây tổng quát (4 hàm)
// f1
function AfterCheck_RadTreeViewNode(clickedNode) {
    var checked = clickedNode.Checked;    
    UpdateAllParentNode(clickedNode, checked);
    UpdateAllChildrenNode(clickedNode, checked);
}
//f2
function UpdateAllChildrenNode(node, checked) {
    var i;
    for (i = 0; i < node.Nodes.length; i++) {
        var childNode = node.Nodes[i];
        if (checked) {
            childNode.Check();
        }
        else {
            childNode.UnCheck();
        }
        UpdateAllChildrenNode(childNode, checked);
    }
}
//f3
function UpdateAllParentNode(node, checked) {
    if (checked) {
        var parent = node.Parent;
        while (parent != null) {
            parent.Check();
            parent = parent.Parent;
        }
    }
    else {
        UnCheckAllParentNode(node)
    }
}
//f4
function UnCheckAllParentNode(node) {
    var parent = node.Parent;
    if (parent != null) {
        var siblingCollection = parent.Nodes;
        var allUnChecked = true;
        for (var i = 0; i < siblingCollection.length; i++) {
            if (siblingCollection[i].Checked) {
                allUnChecked = false;
                break;
            }
        }
        if (allUnChecked) {
            parent.UnCheck();
            UnCheckAllParentNode(parent);
        }
    }
}
 /// Hàm xử lý checkChanged cho trường hợp cây tổng quát (4 hàm) - control telerik mới
// f1
function AfterCheck_TelerikNode(sender, eventArgs)
{
    var clickedNode = eventArgs.get_node();
    var checked = clickedNode.get_checked();
    UpdateAllChildrenTelerikNode(clickedNode, checked);
    UpdateAllParentTelerikNode(clickedNode, checked);
}
//f2
function UpdateAllChildrenTelerikNode(node, checked) {
    var nodes = node.get_nodes();    
    for (var i = 0; i < nodes.get_count(); i++) {
        var childNode = nodes.getNode(i);
        childNode.set_checked(checked);
        UpdateAllChildrenTelerikNode(childNode, checked);
    }
}
//f3
function UpdateAllParentTelerikNode(node, checked) {
    if (checked) {        
        var parent = node.get_parent();        
        while (parent != null) {
            parent.check();            
            parent = parent.get_parent();
        }
    }
    else {
        UnCheckAllParentTelerikNode(node)
    }
}
//f4
function UnCheckAllParentTelerikNode(node) {
    var parent = node.get_parent();
    if (parent != null) {
        var siblingCollection = parent.get_nodes();
        var allUnChecked = true;
        for (i = 0; i < siblingCollection.get_count(); i++)
        {
            if (siblingCollection.getNode(i).get_checked())
            {
                allUnChecked = false;
                break;
            }
        }        
        if (allUnChecked) {
            parent.set_checked(false);
            UnCheckAllParentTelerikNode(parent);
        }
    }
}

function getElementsByClassName( strClassName, obj ) {
    var ar = arguments[2] || new Array();
    var re = new RegExp("\\b" + strClassName + "\\b", "g");

    if ( re.test(obj.className) ) {
        ar.push( obj );
    }
    for ( var i = 0; i < obj.childNodes.length; i++ )
        getElementsByClassName( strClassName, obj.childNodes[i], ar );
    
    return ar;
}

// Hàm cho phép nhập không vượt quá số ký tự quy định
function checkTextBoxMaxLength(textBox, maxLength) {
    var mLength = parseInt(length);
    if (textBox.value.length > mLength) {
        if (window.event)//IE
        {
            e.returnValue = false;
            return false;
        }
        else//Firefox
        {
            e.preventDefault();
        }
    }
}             